package com.dbms.parser.ast;

import com.dbms.common.Constants;
import com.dbms.common.Position;

/**
 * CreateUserNode (创建用户节点) 代表了 `CREATE USER` 语句的抽象语法树 (AST) 结构。
 */
public class CreateUserNode extends StatementNode {
    /**
     * 要创建的用户名。
     */
    private final String username;
    /**
     * 用户的密码。
     */
    private final String password;

    public CreateUserNode(Position position, String username, String password) {
        super(position);
        this.username = username;
        this.password = password;
    }

    /**
     * 返回语句的类型标识。
     * @return "CreateUser" 常量
     */
    @Override
    public String getStatementType() {
        return Constants.STATEMENT_CREATE_USER;
    }

    /**
     * 获取用户名。
     * @return 用户名字符串
     */
    public String getUsername() {
        return username;
    }

    /**
     * 获取密码。
     * 这个方法还会移除从 SQL 解析出的密码字符串两端的单引号。
     * @return 清理后的密码字符串
     */
    public String getPassword() {
        // 使用正则表达式移除字符串开头和结尾的单引号
        return password.replaceAll("^'|'$", "");
    }
}